/*
 * Bir adet TCP/IP bağlantı sağlamak istiyorsal bir adet sunucu ve 
 * bir adet istemci olması gerekiyor aşağıda tanımlayacağımız sınıf istemci sınıfı olacaktır.
 */
package TCP_Server_Client;
import java.lang.*;
/* The java.io package contains the basics needed for IO operations. */
import java.io.*;
/*  The java.net package contains the basics needed for network operations. */  
import java.net.*;
/**
 *
 * @author necmeddin
 * @version 1.0.
 */
public class TCPClient {

    public static void main(String[] args) throws UnknownHostException, IOException{

        String  serverName      =   "localhost";   //  Bağlantı kurulacak sunucunun adı
        int     port            =   1234;          //  Sunucuyla bağlantı kurulacak port numarası. Port numarası sunucu ile aynı olmalıdır.
    
        try{
            
            InetAddress sunucuAdresi    =   InetAddress.getByName(serverName);
            
            //Serverla bağlantı bağlantıyı sağlayacak soket (veri tüneli) oluşturuluyor. 
            System.out.println(serverName+" sunucusu ile "+Integer.toString(port)+" numaralı port üzerinden bağlantı oluşturuluyor...");
            Socket clientSoket = new Socket(serverName,port); 
            System.out.println("Soket bağlantısı oluşturuldu : "+ clientSoket.toString());
         
            DataInputStream     request     =   new DataInputStream(clientSoket.getInputStream());
            DataOutputStream    response    =   new DataOutputStream(clientSoket.getOutputStream());

            //İstemci sunucuya mesaj gönderiyor
            response.writeUTF("Hey server orda mısın sana bir sayı vereceğim asal mı değil mi bana söyleyebilir misin?");
            
            //İstemci sunucudan gelecek mesajı dinliyor.
            String receiveMessage = new String (request.readUTF());
            System.out.println(receiveMessage);
            
            String sendMessage  =   "";
            
            while (sendMessage.compareTo("quit") != 0){
                //Sayı asalmı diye soralım 
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                System.out.print("Sayı gir : ");
                sendMessage  = br.readLine();
                response.writeUTF(sendMessage);
                
                
                if (sendMessage.compareTo("quit") != 0) {
                
                    //İstemci sunucudan gelecek mesajı dinliyor.
                    receiveMessage = new String (request.readUTF());
                    System.out.println(receiveMessage);     
                }
                else // Mesaj quit ise işlem bitsin ve datastreamlar kapatılsın.
                {
                    response.close();
                    request.close(); 
                    System.out.println("Bu iş burada biter ve ben çeker giderim.");
                }
            }
      }
      catch(Exception e) {
         System.out.println("Client servera bağlanamadı. Sorun budur kardeş :"+e);
      }
    }
    
}
